home *** CD-ROM | disk | FTP | other *** search
/ Ian & Stuart's Australian Mac 1993 September / September 93.iso / Archives / Applications / Graphics / image / Imagine / Dialog.c next >
Encoding:
Text File  |  1990-03-01  |  2.8 KB  |  163 lines  |  [TEXT/KAHL]

  1.  
  2. DrawDefault( DPtr, def, boxes )
  3.   DialogPtr DPtr;
  4.   short     def;
  5.   short     *boxes;
  6. {
  7.   GrafPtr    SavePort;
  8.   Handle    Hdl;
  9.   short     type;
  10.   Rect        rec;
  11.   short     i;
  12.   short        corner;
  13.   short        inset;
  14.   
  15.   GetPort(&SavePort);
  16.   SetPort(DPtr);
  17.   if(DPtr != FrontWindow()) ShowWindow(DPtr);
  18.   if( def > 0 )
  19.     {
  20.         GetDItem( DPtr, def, &type, &Hdl, &rec );
  21.         inset = -4.0*(short)((rec.right-rec.left)/60);
  22.         corner = 16.0*(rec.bottom-rec.top)/20.0;
  23.         InsetRect( &rec, inset, inset );
  24.         PenSize( 3, 3 );
  25.         FrameRoundRect( &rec, corner, corner );
  26.         PenSize( 1, 1 );
  27.       i = (*(DialogPeek)DPtr).editField+1;
  28.       if( i > 2 )
  29.         Select_text( DPtr, i );
  30.       }
  31.   i = 0;
  32.   if( boxes != 0L )
  33.     while( boxes[i] != 0 )
  34.       FrameItem(DPtr, boxes[i++]);
  35.   InitCursor();
  36.   
  37.   SetPort(SavePort);
  38. }
  39.  
  40. FrameItem(DPtr, item)
  41.       DialogPtr    DPtr;
  42.       short        item;
  43. {
  44.       Handle    Hdl;
  45.       short     type;
  46.       Rect    rec;
  47.   
  48.       GetDItem(DPtr, item, &type, &Hdl, &rec);
  49.       if( type == userItem )
  50.           FrameRect(&rec);
  51. }
  52.  
  53. ShorttoDialog( DPtr, item, value )
  54.   DialogPtr DPtr;
  55.   short  item;
  56.   short     value;
  57. {
  58.   char    mystr1[256];
  59.   Handle    Hdl;
  60.   short type;
  61.   Rect    rec;
  62.   
  63.        sprintf(mystr1, "%d", value);
  64.        GetDItem(DPtr, item, &type, &Hdl, &rec);
  65.        SetIText(Hdl, CtoPstr(mystr1));
  66. }
  67.  
  68. DialogtoShort( DPtr, item, value, min, max )
  69.   DialogPtr DPtr;
  70.   short  item;
  71.   short     *value;
  72.   short min, max;
  73. {
  74.   char    mystr[256];
  75.   Handle    Hdl;
  76.   short type;
  77.   Rect    rec;
  78.   short i;
  79.   
  80.        for(i=0;i<=64;i++) mystr[i]=0;
  81.        GetDItem(DPtr, item, &type, &Hdl, &rec);
  82.        GetIText(Hdl, &mystr);
  83.        mystr[0] = ' ';
  84.        if(sscanf(mystr, "%d", &*value) == 0)
  85.          {
  86.            Select_text( DPtr, item );
  87.            return(false);
  88.          }
  89.        if( (min != max) && (*value < min || *value > max) )
  90.          {
  91.            Select_text( DPtr, item );
  92.            return(false);
  93.          }
  94.        return(true);
  95. }
  96.  
  97. Do_radio_buttons( DPtr, num, items, hit )
  98.   DialogPtr DPtr;
  99.   short        num;
  100.   short        *items;
  101.   short        hit;
  102. {
  103.   Handle    Hdl;
  104.   short type;
  105.   Rect    rec;
  106.   short i;
  107.   
  108.   for( i = 0; i < num; i++)
  109.     Set_button( DPtr, items[i], 0 );
  110.   Set_button( DPtr, hit, 1 );
  111. }
  112.  
  113.  
  114. Toggle_button( DPtr, item )
  115.   DialogPtr DPtr;
  116.   short        item;
  117. {
  118.   Handle    Hdl;
  119.   short type;
  120.   Rect    rec;
  121.   
  122.   if( If_button( DPtr, item ) )
  123.     Set_button( DPtr, item, 0 );
  124.   else
  125.     Set_button( DPtr, item, 1 );
  126. }
  127.  
  128. Set_button( DPtr, item, set )
  129.   DialogPtr DPtr;
  130.   short        item;
  131.   short     set;
  132. {
  133.   Handle    Hdl;
  134.   short type;
  135.   Rect    rec;
  136.   
  137.   GetDItem(DPtr, item, &type, &Hdl, &rec);
  138.   SetCtlValue(Hdl, set);
  139. }
  140.  
  141. Select_text( DPtr, item )
  142.   DialogPtr DPtr;
  143.   short        item;
  144. {
  145.   Handle    Hdl;
  146.   short type;
  147.   Rect    rec;
  148.   
  149.   GetDItem(DPtr, item, &type, &Hdl, &rec);
  150.   SelIText( DPtr, item, 0, 255 );
  151. }
  152.  
  153. If_button( DPtr, item )
  154.   DialogPtr DPtr;
  155.   short        item;
  156. {
  157.   Handle    Hdl;
  158.   short     type;
  159.   Rect        rec;
  160.   
  161.   GetDItem(DPtr, item, &type, &Hdl, &rec);
  162.   return( GetCtlValue(Hdl) == 1 );
  163. }